package com.stargate.soft.scenario;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;

import com.stargate.bd.ConnectionBD;
import com.stargate.bd.bean.Personne;
import com.stargate.bd.dao.factory.GroupeDAO;
import com.stargate.bd.dao.factory.MembreDAO;
import com.stargate.exception.GroupePersonneNonVideException;

/**
 * <h1>Suppression d’un groupe d’utilisateurs</h1> <br>
 * Le superviseur veut supprimer un groupe d’utilisateurs.<br>
 * L’application le notifie que les entrées dans la table membre correspondant à
 * ce groupe<br>
 * doivent être supprimées et lui demande s’il veut y procéder.<br>
 * Le superviseur valide et ces entrées sont supprimées, puis le groupe est
 * supprimé également.<br>
 * 
 */
public class SuppressionGroupe {

	private ArrayList<Personne> personnes;

	public SuppressionGroupe(int idGroupePers) throws SQLException,
			GroupePersonneNonVideException {
		
		ConnectionBD.setSerializable();

		// récupération des personnes du groupe
		MembreDAO membreDAO = new MembreDAO();
		personnes = membreDAO.selectPersonnesGroupe(idGroupePers);

		if (!personnes.isEmpty()) {
			System.out
					.println("*** Le groupe contient les personnes suivantes ***");
			for (Iterator<Personne> it = personnes.iterator(); it.hasNext();) {
				Personne personne = (Personne) it.next();
				System.out.println(personne);
			}

			// interdiction de supprimer le groupe
			throw new GroupePersonneNonVideException("Le groupe n°"
					+ idGroupePers + " ne peut être supprimé.");

		} else {
			// suppression du groupe
			GroupeDAO groupeDAO = new GroupeDAO();
			groupeDAO.delete(idGroupePers);
		}

		ConnectionBD.commit();
	}

	public ArrayList<Personne> getPersonnes() {
		return personnes;
	}
}
